package com.registration.mapper;

import com.registration.bean.OrderBean;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
@Mapper
public interface OrderMapper {
    // 创建挂号订单
    int insertRegistrationOrder(OrderBean orderBean);

    // 根据用户ID查询订单列表（支持状态筛选）
    List<OrderBean> selectOrdersByUserId(Integer user_id, Integer order_status);

    // 根据就诊人ID查询订单列表（状态是未支付）
    List<OrderBean> selectOrdersByPatientId(Integer patient_id);
    // 根据订单ID查询订单详情
    OrderBean selectOrderDetailById(Integer order_id);

    // 取消订单（更新状态和取消时间）
    int cancelOrder(Integer order_id);

    // 改期订单（更新排班信息）
    int updateScheduleInfo(
            @Param("order_id") Integer order_id,
            @Param("schedule_id") Integer newSchedule_id,
            @Param("visit_date") Date newVisit_date,
            @Param("time_slot") Integer newTime_slot
    );
    // 根据订单ID查询订单（用于取消和改期时的校验）
    OrderBean selectOrderById(@Param("order_id") Integer orderId);

    // 根据就诊人ID查询订单列表（支持状态筛选）
    List<OrderBean> selectOrdersByPatientId(@Param("patient_id") Integer patientId, @Param("order_status") Integer orderStatus);
    //搜索最大订单号
    int selectMaxOrderSeq();



    // 在订单表中筛选出就诊记录
    List<OrderBean> selectVisitedOrders(Integer user_id);


    /**
     * 修改订单信息
     * @param order_id 订单ID
     * @param orderBean 修改后的订单信息
     * @return 修改结果
     */
    int updateOrder(
            @Param("order_id") Integer order_id,
            @Param("orderBean") OrderBean orderBean
    );

    /**
     * 显示就诊人排队叫号信息
     * @param patientId
     * @return
     */
    List<OrderBean> showQueue(Integer patientId);
}
